text:
# 15Horoscopes Insights

Statistical inference is indeed critically important. But only as much as every other part of research. Scientific discovery is not an additive process, in which sin in one part can be atoned by virtue in another. Everything interacts. So equally when science works as intended as when it does not, every part of the process deserves attention. (McElreath, 2015, p. 441)

In this final chapter, there are no models for us to fit and no figures for use to reimagine. McElreath took the opportunity to comment more broadly on the scientific process. He made a handful of great points, some of which I’ll quote in a bit. But for the bulk of this chapter, I’d like to take the opportunity to pass on a few of my own insights about workflow. I hope they’re of use.

## 15.1 Use R Notebooks

OMG

I first started using R in the winter of 2015/2016. Right from the start, I learned how to code from within the RStudio environment. But within RStudio I was using simple scripts. No longer. I now use R Notebooks for just about everything, including my scientific projects, this bookdown project, and even my academic webpage and blog. Nathan Stephens wrote a nice blog on Why I love R Notebooks. I agree. This has fundamentally changed my workflow as a scientist. I only wish I’d learned about this before starting my dissertation project. So it goes…

Do yourself a favor, adopt R Notebooks into your workflow. Do it today. If you prefer to learn with videos, here’s a nice intro by Kristine Yu and another one by JJ Allaire. Try it out for like one afternoon and you’ll be hooked.

## 15.2 Save your model fits

It’s embarrassing how long it took for this to dawn on me.

Unlike classical statistics, Bayesian models using MCMC take a while to compute. Most of the simple models in McElreath’s text take 30 seconds up to a couple minutes. If your data are small, well-behaved and of a simple structure, you might have a lot of wait times in that range in your future.

It hasn’t been that way, for me.

Most of my data have a complicated multilevel structure and often aren’t very well behaved. It’s normal for my models to take an hour or several to fit. Once you start measuring your model fit times in hours, you do not want to fit these things more than once. So, it’s not enough to document my code in a nice R Notebook file. I need to save my brm() fit objects in external files.

Consider this model. It’s taken from Bürkner’s (2020g) vignette, Estimating multivariate models with brms. It took about four minutes for my personal laptop to fit.

library(brms)
data("BTdata", package = "MCMCglmm")
b15.1 <-
brm(data = BTdata,
family = gaussian,
mvbind(tarsus, back) ~ sex + hatchdate + (1 | p | fosternest) + (1 | q | dam),
chains = 2, cores = 2,
seed = 15)

Four minutes isn’t terribly long to wait, but still. I’d prefer to never have to wait for another four minutes, again. Sure, if I save my code in a document like this, I will always be able to fit the model again. But I can work smarter. Here I’ll save my b15.1 object outside of R with the save() function.

save(b15.1, file = "fits/b15.01.rda")

Hopefully y’all are savvy Bayesian R users and find this insultingly remedial. But if it’s new to you like it was me, you can learn more about .rda files here.

Now b15.1 is saved outside of R, I can safely remove it and then reload it.

rm(b15.1)

load("fits/b15.01.rda")

The file took a fraction of a second to reload. Once reloaded, I can perform typical operations, like examine summaries of the model parameters or refreshing my memory on what data I used.

print(b15.1)
##  Family: MV(gaussian, gaussian)
##   Links: mu = identity; sigma = identity
##          mu = identity; sigma = identity
## Formula: tarsus ~ sex + hatchdate + (1 | p | fosternest) + (1 | q | dam)
##          back ~ sex + hatchdate + (1 | p | fosternest) + (1 | q | dam)
##    Data: BTdata (Number of observations: 828)
## Samples: 2 chains, each with iter = 2000; warmup = 1000; thin = 1;
##          total post-warmup samples = 2000
##
## Group-Level Effects:
## ~dam (Number of levels: 106)
##                                      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(tarsus_Intercept)                     0.48      0.05     0.39     0.59 1.00      820     1273
## sd(back_Intercept)                       0.24      0.08     0.09     0.38 1.00      350      599
## cor(tarsus_Intercept,back_Intercept)    -0.53      0.24    -0.96    -0.06 1.00      582      775
##
## ~fosternest (Number of levels: 104)
##                                      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(tarsus_Intercept)                     0.26      0.05     0.16     0.37 1.00      790     1486
## sd(back_Intercept)                       0.36      0.06     0.24     0.47 1.01      436     1013
## cor(tarsus_Intercept,back_Intercept)     0.69      0.20     0.23     0.98 1.01      294      534
##
## Population-Level Effects:
##                  Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## tarsus_Intercept    -0.41      0.07    -0.54    -0.27 1.00     1790     1441
## back_Intercept      -0.01      0.06    -0.14     0.11 1.00     3162     1889
## tarsus_sexMale       0.77      0.06     0.66     0.88 1.00     3622     1384
## tarsus_sexUNK        0.23      0.13    -0.03     0.48 1.00     3809     1727
## tarsus_hatchdate    -0.05      0.06    -0.17     0.06 1.00     1705     1748
## back_sexMale         0.01      0.07    -0.12     0.14 1.00     3655     1434
## back_sexUNK          0.15      0.15    -0.15     0.46 1.00     3793     1401
## back_hatchdate      -0.09      0.05    -0.20     0.01 1.00     2156     1546
##
## Family Specific Parameters:
##              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sigma_tarsus     0.76      0.02     0.72     0.80 1.00     2504     1659
## sigma_back       0.90      0.02     0.86     0.95 1.00     2467     1791
##
## Residual Correlations:
##                     Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## rescor(tarsus,back)    -0.05      0.04    -0.12     0.02 1.00     3181     1865
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
head(b15.1$data) ## tarsus sex hatchdate fosternest dam back ## 1 -1.89229718 Fem -0.6874021 F2102 R187557 1.1464212 ## 2 1.13610981 Male -0.6874021 F1902 R187559 -0.7596521 ## 3 0.98468946 Male -0.4279814 A602 R187568 0.1449373 ## 4 0.37900806 Male -1.4656641 A1302 R187518 0.2555847 ## 5 -0.07525299 Fem -1.4656641 A2602 R187528 -0.3006992 ## 6 -1.13519543 Fem 0.3502805 C2302 R187945 1.5577219 The other option, which we’ve been using extensively throughout the earlier chapters, is to use file argument within the brms::brm() function. You can read about the origins of the argument in issue #472 on the brms GitHub repo. To make use of the file argument, specify a character string. brm() will then save your fitted model object in an external .rds file via the saveRDS() function. Let’s give it a whirl, this time with an interaction. b15.2 <- brm(data = BTdata, family = gaussian, mvbind(tarsus, back) ~ sex * hatchdate + (1 | p | fosternest) + (1 | q | dam), chains = 2, cores = 2, seed = 15, file = "fits/b15.02") Now b15.2 is saved outside of R, I can safely remove it and then reload it. rm(b15.2) We might load b15.2 with the readRDS() function. b15.2 <- readRDS("fits/b15.02.rds") Now we can work with b15.2 as desired. fixef(b15.2) ## Estimate Est.Error Q2.5 Q97.5 ## tarsus_Intercept -0.407477157 0.06774079 -0.53636160 -0.27645328 ## back_Intercept -0.009858322 0.06818287 -0.14034242 0.11951987 ## tarsus_sexMale 0.771016064 0.05713401 0.66167770 0.87772151 ## tarsus_sexUNK 0.194975024 0.14829000 -0.09615388 0.49077344 ## tarsus_hatchdate -0.054718161 0.06616795 -0.18674591 0.07798450 ## tarsus_sexMale:hatchdate 0.013362346 0.05756292 -0.09570965 0.13051447 ## tarsus_sexUNK:hatchdate 0.064036842 0.12538175 -0.18641744 0.31022843 ## back_sexMale 0.004697271 0.06940666 -0.13018649 0.14167466 ## back_sexUNK 0.141885589 0.17316238 -0.19355567 0.48678427 ## back_hatchdate -0.051587053 0.06083319 -0.16817171 0.06586680 ## back_sexMale:hatchdate -0.077686158 0.06540361 -0.20900934 0.05137683 ## back_sexUNK:hatchdate -0.030728833 0.13995034 -0.29797029 0.24109788 The file method has another handy feature. Let’s remove b15.2 one more time to see. rm(b15.2) If you’ve fit a brm() model once and saved the results with file, executing the same brm() code will not re-fit the model. Rather, it will just load and return the model from the .rds file. b15.2 <- brm(data = BTdata, family = gaussian, mvbind(tarsus, back) ~ sex * hatchdate + (1 | p | fosternest) + (1 | q | dam), chains = 2, cores = 2, seed = 15, file = "fits/b15.02") It takes just a fraction of a second. Once again, we’re ready to work with b15.2. b15.2$formula
## tarsus ~ sex * hatchdate + (1 | p | fosternest) + (1 | q | dam)
## back ~ sex * hatchdate + (1 | p | fosternest) + (1 | q | dam)

And if you’d like to remind yourself what the name of that external file was or what subfolder you saved it in, you can extract it from the brm() fit object.

b15.2\$file
## [1] "fits/b15.02.rds"

Also, see Gavin Simpson’s blog post, A better way of saving and loading objects in R, for a discussion on the distinction between .rda and .rds files.

## 15.3 Build your models slowly

The model from Bürkner’s vignette, b15.1, was no joke. If you wanted to be verbose about it, it was a multilevel, multivariate, multivariable model. It had a cross-classified multilevel structure, two predictors (for each criterion), and two criteria. Not only is that a lot to keep track of, there’s a whole lot of places for things to go wrong.

Even if that was the final model I was interested in as a scientist, I still wouldn’t start with it. I’d build up incrementally, just to make sure nothing looked fishy. One place to start would be a simple intercepts-only model.

b15.0 <-
brm(mvbind(tarsus, back) ~ 1,
data = BTdata,
chains = 2, cores = 2,
file = "fits/b15.00")
plot(b15.0)

print(b15.0)
##  Family: MV(gaussian, gaussian)
##   Links: mu = identity; sigma = identity
##          mu = identity; sigma = identity
## Formula: tarsus ~ 1
##          back ~ 1
##    Data: BTdata (Number of observations: 828)
## Samples: 2 chains, each with iter = 2000; warmup = 1000; thin = 1;
##          total post-warmup samples = 2000
##
## Population-Level Effects:
##                  Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## tarsus_Intercept     0.00      0.03    -0.06     0.07 1.00     2256     1482
## back_Intercept       0.00      0.04    -0.07     0.07 1.00     2749     1637
##
## Family Specific Parameters:
##              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sigma_tarsus     1.00      0.03     0.96     1.05 1.01     2506     1659
## sigma_back       1.00      0.03     0.95     1.05 1.00     2371     1517
##
## Residual Correlations:
##                     Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## rescor(tarsus,back)    -0.03      0.04    -0.10     0.04 1.00     1852     1461
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).

If the chains look good and the summary statistics look like what I’d expect, I’m on good footing to keep building up to the model I really care about. The results from this model, for example, suggest that both criteria were standardized (i.e., intercepts at 0 and $$\sigma$$s at 1). If that wasn’t what I intended, I’d rather catch it here than spend four minutes fitting the more complicated b15.1 model, the parameters for which are sufficiently complicated that I may have had trouble telling what scale the data were on.

Note, this is not the same as $$p$$-hacking (Simmons et al., 2011) or wandering aimlessly down the garden of forking paths (Gelman & Loken, 2013). We are not chasing the flashiest model to put in a paper. Rather, this is just good pragmatic data science. If you start off with a theoretically-justified but complicated model and run into computation problems or produce odd-looking estimates, it won’t be clear where things went awry. When you build up, step by step, it’s easier to catch data cleaning failures, coding goofs and the like.

So, when I’m working on a project, I fit one or a few simplified models before fitting my complicated model of theoretical interest. This is especially the case when I’m working with model types that are new to me or that I haven’t worked with in a while. I document each step in my R Notebook files and I save the fit objects for each in external files. I have caught surprises this way. Hopefully this will help you catch your mistakes, too.

## 15.4 Look at your data

Relatedly, and perhaps even a precursor, you should always plot your data before fitting a model. There were plenty examples of this in the text, but it’s worth of making explicit. Simple summary statistics are great, but they’re not enough. For an entertaining exposition, check out Matejka and Fitzmaurice’s (2017) Same stats, different graphs: Generating datasets with varied appearance and identical statistics through simulated annealing*. Though it might make for a great cocktail party story, I’d hate to pollute the scientific literature with a linear model based on a set of dinosaur-shaped data.

## 15.5 Use the 0 + Intercept syntax

We covered this a little in the last couple chapters (e.g., Section 12.4.3), but it’s easy to miss. If your real-world model has predictors (i.e., isn’t an intercept-only model), it’s important to keep track of how you have centered those predictors. When you specify a prior for a brms Intercept (i.e., an intercept resulting from the y ~ x or y ~ 1 + x style of syntax), that prior is applied under the presumption all the predictors are mean centered. In the Population-level (‘fixed’) effects subsection of the set_prior section of the brms reference manual (Bürkner, 2020b), we read:

Note that technically, this prior is set on an intercept that results when internally centering all population-level predictors around zero to improve sampling efficiency. On this centered intercept, specifying a prior is actually much easier and intuitive than on the original intercept, since the former represents the expected response value when all predictors are at their means. To treat the intercept as an ordinary population-level effect and avoid the centering parameterization, use 0 + intercept on the right-hand side of the model formula. (p. 190)

We get a little more information from the Parameterization of the population-level intercept subsection of the brmsformula section:

This behavior can be avoided by using the reserved (and internally generated) variable Intercept. Instead of y ~ x, you may write y ~ 0 + Intercept + x. This way, priors can be defined on the real intercept, directly. In addition, the intercept is just treated as an ordinary population-level effect and thus priors defined on b will also apply to it. Note that this parameterization may be less efficient than the default parameterization discussed above. (p. 40)

We didn’t bother with this for most of the project because our priors on the Intercept were often vague and the predictors were often on small enough scales (e.g., the mean of a dummy variable is close to 0) that it just didn’t matter. But this will not always be the case. Set your Intercept priors with care.

There’s also the flip side of the issue. If you have no strong reason not to, consider mean-centering or even standardizing your predictors. Not only will that solve the Intercept prior issue, but it often results in more meaningful parameter estimates.

In a typical model-fitting file, I’ll load my data, perhaps transform the data a bit, fit several models, and examine the output of each with trace plots, model summaries, information criteria, and the like. In my early days, I just figured each of these steps were self-explanatory.

Nope.

“In every project you have at least one other collaborator; future-you. You don’t want future-you to curse past-you.”

My experience was that even a couple weeks between taking a break from a project and restarting it was enough time to make my earlier files confusing. And they were my files. I now start each R Notebook document with an introductory paragraph or two explaining exactly what the purpose of the file is. I separate my major sections by headers and subheaders. My working R Notebook files are peppered with bullets, sentences, and full on paragraphs between code blocks.

This idea is implicit in McElreath’s text, but it’s easy to miss the message. I know I did, at first. I find this is especially important for data wrangling. I’m a tidyverse guy and, for me, the big-money verbs like mutate(), gather(), select(), filter(), group_by(), and summarise() take care of the bulk of my data wrangling. But every once and a while I need to do something less common, like with str_extract() or case_when(). When I end up using a new or less familiar function, I typically annotate right in the code and even sometimes leave a hyperlink to some R-bloggers post or stackoverflow question that explained how to use it.

## 15.8 Break up your workflow

I’ve also learned to break up my projects into multiple R Notebook files. If you have a small project for which you just want a quick and dirty plot, fine, do it all in one file. My typical project has:

• a primary data cleaning file;
• a file with basic descriptive statistics and the like;
• at least one primary analysis file;
• possible secondary and tertiary analysis files;
• a file or two for my major figures; and
• a file explaining and depicting my priors, often accompanied by my posteriors, for comparison.

Putting all that information in one R Notebook file would be overwhelming. Your workflow might well look different, but hopefully you get the idea. You don’t want working files with thousands of lines of code.

And mainly to keep Jenny Bryan from setting my computer on fire, I’m also getting into the habit of organizing all these interconnected files with help from RStudio Projects, which you can learn even more about from Chapter 8 in R4DS Grolemund & Wickham (2017).

## 15.9 Code in public

If you would like to improve the code you write for data-wrangling, modeling, and/or visualizing, code in public. Yes, it can be intimidating. Yes, you will probably make mistakes. If you’re lucky, others will point them out and you will revise and learn and grow.

You can do this on any number of mediums, such as

• GitHub (e.g., here),
• personal blogs (e.g., here),
• the Open Science Framework (e.g., here),
• online books (e.g., here),
• full-blown YouTube lectures (e.g., here),
• or even in brief Twitter GIFs (e.g., here).

I’ve found that just the possibility that others might look at my code makes it more likely I’ll slow down, annotate, and try to use more consistent formatting. Hopefully it will benefit you, too.

Yes, that Gelman.

Actually, I started reading Gelman’s blog around the same time I dove into McElreath’s text. But if this isn’t the case for you, it’s time to correct that evil. My graduate mentor often recalled how transformative his first academic conference was. He was an undergrad at the time and it was his first experience meeting and talking with the people whose names he’d seen in his text books. He learned that science was an ongoing conversation among living scientists and–at that time–the best place to take part in that conversation was at conferences. Times keep changing. Nowadays, the living conversation of science occurs online on social media and in blogs. One of the hottest places to find scientists conversing about Bayesian statistics and related methods is Gelman’s blog. The posts are great. But a lot of the action is in the comments sections, too.

## 15.11 Check out other social media, too

If you’re not on it, consider joining academic (see the related blog posts by Sarah Mojarad and Dan Quintana). The word on the street is correct. Twitter can be rage-fueled dumpster fire. But if you’re selective about who you follow, it’s a great place to lean from and connect with your academic heroes. If you’re a fan of this project, here’s a list of some of the people you might want to follow:

If you’re on facebook and in the social sciences, you might check out the Bayesian Inference in Psychology group. It hasn’t been terribly active, as of late. But there are a lot of great folks to connect with, there.

I’ve already mentioned Gelman’s blog. McElreath has one, too. He posts infrequently, but it’s usually pretty good when he does.

Also, do check out the Stan Forums. They have a special brms tag there, under which you can find all kinds of hot brms talk.

But if you’re new to the world of asking for help with your code online, you might acquaint yourself with the notion of a minimally reproducible example. In short, a good minimally reproducible example helps others help you. If you fail to do this, prepare for some snark.

## 15.12 Parting wisdom

Okay, that’s enough from me. Let’s start wrapping this project up with some McElreath.

There is an aspect of science that you do personally control: openness. Pre-plan your research together with the statistical analysis. Doing so will improve both the research design and the statistics. Document it in the form of a mock analysis that you would not be ashamed to share with a colleague. Register it publicly, perhaps in a simple repository, like Github or any other. But your webpage will do just fine, as well. Then collect the data. Then analyze the data as planned. If you must change the plan, that’s fine. But document the changes and justify them. Provide all of the data and scripts necessary to repeat your analysis. Do not provide scripts and data “on request,” but rather put them online so reviewers of your paper can access them without your interaction. There are of course cases in which full data cannot be released, due to privacy concerns. But the bulk of science is not of that sort.

The data and its analysis are the scientific product. The paper is just an advertisement. If you do your honest best to design, conduct, and document your research, so that others can build directly upon it, you can make a difference. (p. 443)

Toward that end, also check out the OSF and their YouTube channel, here. Katie Corker gets the last words: “Open science is stronger because we’re doing this together.”

## Session info

sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Catalina 10.15.3
##
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base
##
## other attached packages:
## [1] brms_2.13.5 Rcpp_1.0.5
##
## loaded via a namespace (and not attached):
##  [1] nlme_3.1-144         matrixStats_0.56.0   xts_0.12-0           threejs_0.3.3        rstan_2.19.3
##  [6] tools_3.6.3          backports_1.1.9      R6_2.4.1             DT_0.13              colorspace_1.4-1
## [11] tidyselect_1.1.0     gridExtra_2.3        prettyunits_1.1.1    processx_3.4.4       Brobdingnag_1.2-6
## [16] emmeans_1.4.5        compiler_3.6.3       cli_2.0.2            shinyjs_1.1          sandwich_2.5-1
## [21] labeling_0.3         colourpicker_1.0     bookdown_0.18        scales_1.1.1         dygraphs_1.1.1.6
## [26] mvtnorm_1.1-0        ggridges_0.5.2       callr_3.4.4          stringr_1.4.0        digest_0.6.25
## [31] StanHeaders_2.21.0-1 rmarkdown_2.1        base64enc_0.1-3      pkgconfig_2.0.3      htmltools_0.5.0
## [36] fastmap_1.0.1        htmlwidgets_1.5.1    rlang_0.4.7          shiny_1.5.0          farver_2.0.3
## [41] generics_0.0.2       zoo_1.8-7            crosstalk_1.1.0.1    gtools_3.8.2         dplyr_1.0.1
## [46] inline_0.3.15        magrittr_1.5         loo_2.3.1            bayesplot_1.7.1      Matrix_1.2-18
## [51] munsell_0.5.0        fansi_0.4.1          abind_1.4-5          lifecycle_0.2.0      stringi_1.4.6
## [56] multcomp_1.4-13      yaml_2.2.1           MASS_7.3-51.5        pkgbuild_1.1.0       plyr_1.8.6
## [61] grid_3.6.3           parallel_3.6.3       promises_1.1.1       crayon_1.3.4         miniUI_0.1.1.1
## [66] lattice_0.20-38      splines_3.6.3        knitr_1.28           ps_1.3.4             pillar_1.4.6
## [71] igraph_1.2.5         markdown_1.1         estimability_1.3     shinystan_2.5.0      reshape2_1.4.4
## [76] codetools_0.2-16     stats4_3.6.3         rstantools_2.1.1     glue_1.4.2           evaluate_0.14
## [81] vctrs_0.3.4          httpuv_1.5.4         gtable_0.3.0         purrr_0.3.4          assertthat_0.2.1
## [86] ggplot2_3.3.2        xfun_0.13            mime_0.9             xtable_1.8-4         coda_0.19-3
## [91] later_1.1.0.1        rsconnect_0.8.16     survival_3.1-12      tibble_3.0.3         shinythemes_1.1.2
## [96] TH.data_1.0-10       ellipsis_0.3.1       bridgesampling_1.0-0

### References

Bürkner, P.-C. (2020b). brms reference manual, Version 2.13.5. https://CRAN.R-project.org/package=brms/brms.pdf

Bürkner, P.-C. (2020g). Estimating multivariate models with brms. https://CRAN.R-project.org/package=brms/vignettes/brms_multivariate.html

Gelman, A., & Loken, E. (2013). The garden of forking paths: Why multiple comparisons can be a problem, even when there is no “fishing expedition” or “p-hacking” and the research hypothesis was posited ahead of time. 17. https://stat.columbia.edu/~gelman/research/unpublished/p_hacking.pdf

Grolemund, G., & Wickham, H. (2017). R for data science. O’Reilly. https://r4ds.had.co.nz

Matejka, J., & Fitzmaurice, G. (2017). Same stats, different graphs: Generating datasets with varied appearance and identical statistics through simulated annealing. https://www.autodesk.com/research/publications/same-stats-different-graphs

McElreath, R. (2015). Statistical rethinking: A Bayesian course with examples in R and Stan. CRC press. https://xcelab.net/rm/statistical-rethinking/

Simmons, J. P., Nelson, L. D., & Simonsohn, U. (2011). False-positive psychology: Undisclosed flexibility in data collection and analysis allows presenting anything as significant. Psychological Science, 22(11), 1359–1366. https://doi.org/10.1177/0956797611417632


text:
# Write ASCII-Art Obfuscated Code, read as, and resulting in: "DFTBA" [closed]

The challenge is to write the most elaborate code, embedded in ASCII art that reads and prints "DFTBA". For example, the following reads DFTBA:

oooooooooo.   oooooooooooo ooooooooooooo oooooooooo.        .o.
888'   Y8b  888'     8 8'   888   8 888'   Y8b      .888.
888      888  888              888       888     888     .8"888.
888      888  888oooo8         888       888oooo888'    .8' 888.
888      888  888    "         888       888    88b   .88ooo8888.
888     d88'  888              888       888    .88P  .8'     888.
o888bood8P'   o888o            o888o     o888bood8P'  o88o     o8888o

And the following, in bash prints DFTBA

echo "DFTBA"

The challenge is to write one that does both.

## Winning conditions

Valid answers, (all conditions at my discretion)

• Can be clearly read as DFTBA
• Print DFTBA when executed
• Must be functional with no Internet connection
• have letters of equal height
• must not have more than 80 columns
• must not have more than 10 rows

Points (highest sum wins)

• Rows * Columns / 32
• Readability: 25 for legible, 50 for very clear
• 1 point for each different non-whitespace character used

## Restrictions

These may be used for something, so all responses are assumed to be released into the public domain. If you can't, or choose not to release your answer into the public domain: post a comment/response to the original question saying "The answer authored and/or shared by me, may not be considered to be in the public domain".

Non-public domain answers are welcome too! Just make sure to specify :-)

## What is DFTBA?

It sometimes stands for "Don't Forget To Be Awesome", but not always... Long story... This related song might help explain (or confuse).

• The winning criteria is really largest area? That will quickly turn into an arms race of people adding more and more worthless characters to get it bigger. There is really no upper bound on this. Jan 25 '13 at 4:30
• @CMP, revised, thanks :-) Jan 25 '13 at 4:41
• Do upper and lower case characters count separately (as different characters)? Feb 1 '13 at 17:23
• Also, what's to stop me from dumping random characters into the code that do nothing? Is that allowed? Feb 1 '13 at 17:25
• @Shmiddty, yes, all characters with different ascii codes (excluding whitespace). As long as it runs, that's fine :-) Feb 1 '13 at 22:20

## Piet, Score Uncertain (153ish)

I understand that this doesn't strictly fit within the specifications (requiring ASCII art), however the source code does provide a very readable DFTBA. The trace is below.

Piet ignores every colour that doesn't mean anything. As a result, I used gray as the generic "comment colour" to outline and the like. The gray doesn't get interpreted (as you'll see in the trace). I wanted to make it clear which pixels were in the program and which were not.

I've used 15 colours, which is 13 without whitespce. It is 89x32 pixels, though could be compressed more. I used 4 op-codes (subtract, divide, push and outputc). Maybe if using scoring how I would think, 153?

Probably doesn't warrant a score, but was an interesting exercise. Having never used Piet before, I've never done so much trial-and-error programming! I needed npiet extensively, and its trace. I still can't figure out how the movement of the cursor works with any stability!

How it works:

• D, F, T are constants for their respective ASCII letters that are then pushed to the stack, and the OUTC command called
• B is the ASCII for B x 2 (needed to be to look good), which is pushed to the stack, then divided by two, then duplicated on the stack and the OUTC command called
• Note the earlier duplication. That was because I couldn't make A look good in so few characters. I push 1 to the stack, subtract (making the ASCII code for A) and then the whole A character is the opcode for OUTC - doesn't matter the size, because it's an operation not a constant

• Cool answer. So are al the letters except A ignored? Feb 7 '13 at 8:56
• Actually - each letter is the constant of that letter (except A). The area of each letter is the constant. Hence why they're slightly weird looking :) Feb 7 '13 at 9:56
• Oh, that's really cool. Nicely done :-) Feb 7 '13 at 20:05

## Malbolge (71 80 x 10) / 32 + 25 + 94 = 141.1875 144

Update: added more spacing between the letters to raise the score.

Tested with the official Malbolge interpreter. Of course, it's really not hard to print static text using Malbolge. The encoding used by Malbolge almost guarantees you'll have the whole set of printable ASCII characters in there.

bCBA@?>=<;       :9876543210    /.-,+*)('&%$# "!~}|{zyxwv uts rqp onm lkjihgfedcb a_^]\[ZYXWVU TSR QPO NML KJI HGF EDC BA@ ?>= <;: 987 654 321 0/. -,+ *)( '&%$#"      !~}       |{z     yxw
vuW       srq    ponmlkjihg         &^]         #a_A]\[TxX       WVU       TSR
QPO       N0L    KJIHGFEDCBA         @?>         =<;:3W16543       ,P0/.-,+*)('&
%$# "!~ }|{ zyx wvu tsr qpo nml kji hgf edc ba _^] \[Z YXW VUT SRQ PO1 lYK JIH GFE DCB A@? >=< ;:98765432 10/ .-, +*)('&%$#"!       ~}|       {zy

Explanation of the code (people said they didn't understand it):

First, let's normalize the code to the operations given at the above page:

iooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*ooooooooooooop<pp<ooo*ooop<ooooooooooo*ooooooooooooooooooop<poooop<oo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo*<vooooo
oooooooooooooooooooooooooooooooooooooooooooo

Also note that after each instruction cycle, the executed instruction is re-encoded and the code pointer and the data pointer are increased by 1.

• At the beginning, C (code ptr) = D (data ptr) = 0. This means [D] = 'b' (98) and the i instruction is selected. So we jump to address 99. (C is first set to 98 and then increased), the data pointer is now 1.

• At 98 there's a string of NOPs (o). These do have the effect that they are all re-encoded and that C and D are incremented. The next real instruction (*) is found at address 140, so now C=140 and D=42.

• * does a right rotate (or division by three) on what the data pointer's pointing at, and stores back into the memory and in the accumulator A. [42] = 'x' (120), so A <- [42] <- '(' (40).

• Another row of NOPs causes C=154 (p) and D=62 ( [D]='j' (106) ).

• p is the crazy operator. I'm not going to reproduce its table here, but what happens is A = [D] = crazy(A, [D]). A is still 42, [D] is 106, which means crazy(A, [D]) = 29504.

• Next up is <, which is output. It outputs the accumulator, which is 29504, as an ASCII character. 29504 % 256 = 68, which is D, so now we have the D.
• The rest of the letters are output in a similar manner.
• I looked into Malbolge a little... and I don't get it! :-) Would you mind explaining how this code works? Jan 26 '13 at 22:23
• @FakeRainBrigand: did so Jan 28 '13 at 23:37
• I don't understand how 141 > 144. Mar 7 '13 at 19:05

## Javascript (80 x 10) / 32 + 25? + 94 = 144

Code:

eval('for(i      =10;i<0x24;42,  Number["prot"+  "otype"][(i++    ).toString(36\
}+!!{}+!!{}).b   ())).c(+((+!!{  }).d()+(5).e()  ))+(     +((+!!  {}).f()+(2+!!\
{}+!      !{}+!  !{}).               g())).      h(+(      (+!!   {}).      i()\
+(7)       .j()  ))+(+((2)           .k()+(      /*TVEXFGHZKJP    Q*/(      0x1\
+0x1       +0x1  )*0x3).l(           ))).m(      +((8/4+1).n()+   (+[]).o\()))+\
(+((      +!!{}  ).p()+(-~           {}).q(      ))).      r(+((  +!!{}).s()+(!\
!{}+2/*WARP*/)   .t()                ))+(+(      (+!!     {}).u(  )+(+      [])\
.v())).w(+((+    !!{}                ).y()+      (2/*Y*/).z()))   )/**      **/\
.toUpperCase     ());                "#$%\' /,:>?@^_9|&M ODLB I"') To add some explanation: First I map Number.prototype.toString to each lower-case letter: for(i=10;i<36;Number.prototype[(i++).toString(36)] = Number.prototype.toString); This allows me to use the lowercase letters efficiently. Next I construct the string 'DFTBA' by converting numbers to characters, eg: (13).a(15) // 'd' (I could have used fromCharCode or toString(36) for all of the characters, but that would have been too easy) To fill out extra characters, and further obfuscate the code, I use a few tricks to create the numbers: +[] // 0 +!!{} // 1 !!{}+!!{} // 2 Etc. For characters that aren't used in the actual code, I dropped them in either comment blocks /* ... */ or strings " ... ". I started off with an 80x10 grid, then whittled that down to my letters, then adjusted my code to fit that (also, looks better in this font, the last | is just the cursor): • Nice. If there was any way to smooth out the B it would be better (it's borderline 8). So the score looks right to me. Feb 2 '13 at 20:06 ## Perl (75 x 7) / 32 + 25 + 59 ≈ 107.4 @D=('-4*x^2 8*x^5-72*x^3 56*x^4-260*x^1 +272*x^6', ' 4*x^2 -4*x' );$b++   ,s/  (-)  ?(\w  +)(  .x)?    (\^       \d+
)?/      "\$$b \[04 ||2 3<1 ]1= 2^I" .!"$$O"   /exgemfor         +@D;       $P=pop@2;$K     =(  pop
@1)       /+$P and$_.=       chr(    --$j ?"$K*x^$j" :"+" .$K),    s/^               \+|\       +\B|    \b1\   *|\    ^1$/ /gx,map$1[$j++]-=$_*$K, @2while$j=    @1-@2  ;print

I'd tell you what it does, but that'd ruin the obfu, wouldn't it ;)

• Awesome! I'm just counting 59 unique characters (after removing whitespace). Jan 25 '13 at 13:29
• @FakeRainBrigand oops, you're right. I just ran a count_char over it, and forgot to exclude whitespace. Jan 25 '13 at 14:11

## C#, (71*7)/32+25+45 = 85.53

My first Programming Puzzles answer! C# is really not very good for these games...

/**/using/*    */System;/*  */namespace   F{class//oo.        .o.
//8'   Y8b  888'             8888      888'    Y8b      .888.
//8      888  888              8888       888      888     .8"888.
/*8      8*/  I{static         void       Main(string     []  args
) {      /*8  888    "         8888       888     88*/   {Console.
//8     d88'  888              8888       888     .88P  .8'     888.
WriteLine(     /*88             8888      */"DFTBA");   /**/      }}}}
• I'm impressed! It's not easy to do these when you have to create a class :-) Apr 11 '13 at 18:11

# Python, (69*7)/32 + 25 + 49 = 89

oo=getattr;   o=__import__ ('sys');O='s' 'tdout';#o.        .o.
class    Y8b  :#88'     8 8'   888   8 888'   Y8b      .888.
#88      888  888              888       888     888     .8"888.
def      a88  (Oo,oO):         oo(       oo(o,O),'w'    'r'  'it'
"e"      )((  (oO    )         ));       11/    0b10   ;return[88,
88]     #d8  888              888       888    .88P  .8'     888.
d=Y8b().a88;  d("D"            "FT")     +[1]+d("BA"  '\n'     )#1880

It's not easy to do it in Python because of indentation and whitespace. So I did one of many things to make the indentation legit:

• defined a class
• used concatenation of strings
• list with a trailing comma
• line continuation character (which I ended up not using)

Readability can still be improved a bit...

(I have made a full write up here as it is quite extensive how I got to these two results)

Brainfuck, Full ASCII range 0 to 255: 80x10=800/32=25+25+219=269

+l+A+O#@e@        /+@+|+2+@@X     @*3+}+@+@YZ    q4[@>@+@@           @:+@
@+B+"+~@@N        @p+K+%>@@v@     dJ+w+@+@+@@    I@+@+@+@@         (@+  @<@
@<@      @-@      @@]                 U>@        @-@    -@@f      @.r    +@E
+@@       .@@0    @>@+@+@+@@@         @+@        @.@    <@@@      @-'    -@@
-€R       -9‚     ƒ.„-….†$c‡ˆ ‰Š‹ Œg&Ž6H ‘h’“7”i•–— ˜u™ Qš1› MœL )nG ?žŸ x¡¢£ ¤¥¦j@§{D¨ !©ª «P¬ ®bm ¬¯° ±²³ ´µ\¶ ·¸F ¹8º »S¼ ½¾¿ ÀVÁ ÂTÃ ÄÅk _ÆÇÈ ÉÊË ÌÍÎ ÏaÐ;ÑCÒÓsÔ ÕÖ× ØoÙ ÚÛ=Ü5ÝÞßà áâã äåæ çtèéê^ëìíî Wïð ñòó ôõö÷yøùúû üýz þÿ, There is a line through the middle of this top one which is not quite strait, but that is just the display here on CodeGolf. If you download the original file from the above link and view it in the Brainfuck Developer or Notepad instead of Wordpad for example, it will look correct like this. Brainfuck, Part ASCII range 0 to 127: 80x10=800/32=25+25+95=145 +l+A+O#@e@ /+@+|+2+@@X @*3+}+@+@YZ q4[@>@+@@ @:+@ @+B+"+~@@N @p+K+%>@@v@ dJ+w+@+@+@@ I@+@+@+@@ (@+ @<@ @<@ @-@ @@] U>@ @-@ -@@f @.r +@E +@@ .@@0 @>@+@+@+@@@ @+@ @.@ <@@@ @-' -@@ -@R -9@@ @.@-@.@$c@@         @@@        @@g&@@6@H        @h@@7@i@@@
@u@       Q@1@     M@L                 )nG        @?@@@x@@@        `@@@j@@{D@
!@@       @P@@     @bm                 ¬@@        @@@    @@\@     @@F      @8@
@S@      @@@       @V@                 @T@        @@k    _@@@     @@@      @@@
@a@;@C@@s@         @@@                 @o@        @@=@5@@@@      @@@        @@@
@t@@@^@@@@         W@@                 @@@        @@@@y@@@@      @@z        @@,
• Awesome answer! Definitley the high score, but one of us is counting incorrectly. I removed characters matching \s regex (whitespace), string to array |> unique |> length. Jun 2 '14 at 13:02
• Did you run that regex above the text above or the text on the website I linked, check there as the CodeGolf version of the code is not the same (it alters the code I paste in). Jun 3 '14 at 12:16

## C, (55*8)/32+25+55 = 93.35

It's quite easy to make the letters larger, and use a few more characters.

main()    {p(O(O(O(  O(O(O(O(O(  O(O(O(O(O       (O
(p(O(O(   p()))))))  ))))))))))  ));puts(""     ,p(o
(p    (o  (o             (o      (o      (o    (o  (o
(o    (o  (o             (o      (o      (o   (o    (o
(o    (o  (o())))))      ))      ))))))))    ))))));}x=
59    ;O  ()             {x      ++      ;}  o(      ){
+x    --  ;}             p(      ){      ;;  ;;      ;;
putchar   (x             +9      );x;-x;}    q(      );

# Java

class  Ypnypn  {public  static    void
main(  String  []array  ){{}{}   {{{{}{
{   }  {          {     }    }   {    }
{   (  System     .     out).    print(
(   "  "          +     "    "   +
"   "  +          "     DFTBA"   )    .
trim(  )          )     ;}}}}}   }    }
• Definitely the best readability of all the answers. I'm out of votes today, but I'll be back. Dec 13 '19 at 17:48

format: plain


text:
## Moments of Inertia of a Ring and a Disc

Let us consider a thin disc and a thin ring.

A) First, try to guess without calculation, which shape, a disk or a ring, will have a greater moment of inertia if they have the same radius, mass and axis of rotation.

B) Determine the moment of inertia of a thin circular-shaped ring of mass m and radius R with respect to the axis passing perpendicularly through its centre.

C) Determine the moment of inertia of a thin circular disk of radius R and mass m with respect to the axis passing perpendicularly through its centre.

• #### Hint A

Think about the quantities on which moment of inertia of a body depends.

• #### Hint 1B

Review the theory explained in the task Moment setrvačnosti tyče. How can we use it in this task?

• #### Hint 2B

Think about the shape of the integral. Knowing the radius of the circle, how do we express the length of a small piece of the curve ds if we consider that it corresponds with an infinitely small angle ? Does this perspective make the determination of the limits of the integral easier?

• #### Hint 1C

What is the difference in calculation of the moment of inertia of a disk and a ring? Will the results from the previous section be useful to us?

• #### Hint 2C

Express the moment of inertia of one ring. Use the results from the previous section.

Then we calculate the total moment of inertia of the disk by adding up the contributions of all the rings, i.e. by integration.

• #### Another possible solution of part C

The problem can also be very easily solved by the transformation into a double integral in polar coordinates:

$J_d = \int_{S} \sigma r^2 dS\,.$
$dS = rd \varphi dr\,,$   $J_d = \int_{0}^{2\pi} \int_{0}^{R} \sigma r^3 dr d \varphi = \frac{1}{2}\pi \sigma R^4 = \frac{1}{2}m R^2\,.$
$J_r = mR^2\,.$
$J_d = \frac{1}{2} mR^2\,.$


text:
All of Buck's Comments + Replies

Discussion with Eliezer Yudkowsky on AGI interventions

By "checkable" do you mean "machine checkable"?

I'm confused because I understand you to be asking for a bound on the derivative of an EfficientNet model, but it seems quite easy (though perhaps kind of a hassle) to get this bound.

I don't think the floating point numbers matter very much (especially if you're ok with the bound being computed a bit more loosely).

3Zac Hatfield Dodds14dAh, crux: I do think the floating-point matters! Issues of precision, underflow, overflow, and NaNs bedevil model training and occasionally deployment-time behavior. By analogy, if we deploy an AGI the ideal mathematical form of which is aligned we may still be doomed, even it's plausibly our best option in expectation. Checkable meaning that I or someone I trust with this has to be able to check it! Maxwell's proposal is simple enough that I can reason through the whole thing, even over float32 rather than R, but for more complex arguments I'd probably want it machine-checkable for at least the tricky numeric parts.
Discussion with Eliezer Yudkowsky on AGI interventions

Take an EfficientNet model with >= 99% accuracy on MNIST digit classification. What is the largest possible change in the probability assigned to some class between two images, which differ only in the least significant bit of a single pixel? Prove your answer before 2023.

You aren't counting the fact that you can pretty easily bound this based on the fact that image models are Lipschitz, right? Like, you can just ignore the ReLUs and you'll get an upper bound by looking at the weight matrices. And I believe there are techniques that let you get tighter bounds than this.

3Zac Hatfield Dodds14dIf you can produce a checkable proof of this over the actual EfficientNet architecture, I'd pay out the prize. Note that this uses floating-point numbers, not the reals!
Discussion with Eliezer Yudkowsky on AGI interventions

Am I correct that you wouldn't find a bound acceptable, you specifically want the exact maximum?

4Buck14dYou aren't counting the fact that you can pretty easily bound this based on the fact that image models are Lipschitz, right? Like, you can just ignore the ReLUs and you'll get an upper bound by looking at the weight matrices. And I believe there are techniques that let you get tighter bounds than this.
3Zac Hatfield Dodds15dI'd award half the prize for a non-trivial bound.
Redwood Research’s current project

Suppose you have three text-generation policies, and you define "policy X is better than policy Y" as "when a human is given a sample from both policy X and policy Y, they prefer the sample from the latter more than half the time". That definition of "better" is intransitive.

2adamShimi1moHum, I see. And is your point that it should not create a problem because you're only doing comparison X vs Y and Z vs Y (where Y is the standard policy and X and Z are two of your conservative policies) but you don't really care about the comparison between X and Z?
Redwood Research’s current project

Thanks, glad to hear you appreciate us posting updates as we go.

Redwood Research’s current project

You're totally right that we'll probably have low quality on those prompts. But we're defining quality with respect to the overall prompt distribution, and so as long as prompts that can't be realistically completed non-injuriously are rare, our average quality won't take that big a hit.

1Julian_R1moI was confused by Buck's response here because I thought we were going for worst-case quality until I realised: 1. The model will have low quality on those prompts almost by definition - that's the goal. 2. Given that, we also want to have a generally useful model - for which the relevant distribution is 'all fanfiction', not "prompts that are especially likely to have a violent continuation". In between those two cases is 'snippets that were completed injuriously in the original fanfic ... but could plausibly have non-violent completions', which seems like the interesting case to me. I suppose one possibility is to construct a human-labelled dataset of specifically these cases to evaluate on.
Redwood Research’s current project

We've now added this visual feedback, thanks for the suggestion :)

Redwood Research’s current project

So note that we're actually working on the predicate "an injury occurred or was exacerbated", rather than something about violence (I edited out the one place I referred to violence instead of injury in the OP to make this clearer).

The reason I'm not that excited about finding this latent is that I suspect that the snippets that activate it are particularly easy cases--we're only interested in generating injurious snippets that the classifier is wrong about.

For example, I think that the model is currently okay with dropping babies probably because it doesn... (read more)

Redwood Research’s current project

We're tried some things kind of like this, though less sophisticated. The person who was working on this might comment describing them at some point.

One fundamental problem here is that I'm worried that finding a "violence" latent is already what we're doing when we fine-tune. And so I'm worried that the classifier mistakes that will be hardest to stamp out are those that we can't find through this kind of process.

I have an analogous concern with the "make the model generate only violent completions"--if we knew how to define "violent", we'd already be don... (read more)

5gwern2moControlling the violence latent would let you systematically sample for it: you could hold the violence latent constant, and generate an evenly spaced grid of points around it to get a wide diversity of violent but stylistically/semantically unique. Kinds of text which would be exponentially hard to find by brute force sampling can be found this way easily. It also lets you do various kinds of guided search or diversity sampling, and do data augmentation (encode known-violent samples into their latent, hold the violent latent constant, generate a bunch of samples 'near' it). Even if the violence latent is pretty low quality, it's still probably a lot better as an initialization for sampling than trying to brute force random samples and running into very rapidly diminishing returns as you try to dig your way into the tails. And if you can't do any of that because there is no equivalent of a violent latent or its equivalent is clearly too narrow & incomplete, that is pretty important, I would think. Violence is such a salient category, so frequent in fiction and nonfiction (news), that a generative model which has not learned it as a concept is, IMO, probably too stupid to be all that useful as a 'model organism' of alignment. (I would not expect a classifier based on a failed generative model to be all that useful either.) If a model cannot or does not understand what 'violence' is, how can you hope to get a model which knows not to generate violence, can recognize violence, can ask for labels on violence, or do anything useful about violence?
The theory-practice gap

The alignment problem in different capability regimes

One crucial concern related to "what people want" is this seems underdefined, un-stable in interactions with wildly superintelligent systems, and prone to problems with scaling of values within systems where intelligence increases.

This is what I was referring to with

by assumption the superintelligence will be able to answer any question you’re able to operationalize about human values

The superintelligence can answer any operationalizable question about human values, but as you say, it's not clear how to elicit the right operationalization.

The alignment problem in different capability regimes
Buck3mo16Ω11

Re the negative side effect avoidance: Yep, you're basically right, I've removed side effect avoidance from that list.

And you're right, I did mean "it will be able to" rather than "it will"; edited.

The alignment problem in different capability regimes

I think this is a reasonable definition of alignment, but it's not the one everyone uses.

I also think that for reasons like the "ability to understand itself" thing, there are pretty interesting differences in the alignment problem as you're defining it between capability levels.

2Edouard Harris2moOne reason to favor such a definition of alignment might be that we ultimately need a definition that gives us guarantees that hold at human-level capability or greater, and humans are probably near the bottom of the absolute scale of capabilities that can be physically realized in our world. It would (imo) be surprising to discover a useful alignment definition that held across capability levels way beyond us, but that didn't hold below our own modest level of intelligence.
Buck's Shortform
Buck3mo39Ω18

[this is a draft that I shared with a bunch of friends a while ago; they raised many issues that I haven't addressed, but might address at some point in the future]

In my opinion, and AFAICT the opinion of many alignment researchers, there are problems with aligning superintelligent models that no alignment techniques so far proposed are able to fix. Even if we had a full kitchen sink approach where we’d overcome all the practical challenges of applying amplification techniques, transparency techniques, adversarial training, and so on, I still wouldn’t feel... (read more)

1TekhneMakre3moI appreciate your points, and I don't think I see significant points of disagreement. But in terms of emphasis, it seems concerning to be putting effort into (what seems like) rationalizing not updating that a given approach doesn't have a hope of working. (Or maybe more accurately, that a given approach won't lead to a sufficient understanding that we could know it would work, which (with further argument) implies that it will not work.) Like, I guess I want to amplify your point > But I think it’s also quite important for people to remember that they’re insufficient, and that they don’t suffice to solve the whole problem on their own. and say further that one's stance to the benefit of working on things with clearer metrics of success, would hopefully include ongoingly noticing everyone else's stance to that situation. If a given unit of effort can only be directed towards marginal things, then we could ask (for example): What would it look like to make cumulative marginal progress towards, say, improving our ability to propose better approaches, rather than marginal progress on approaches that we know won't resolve the key issues?
0Chantiel3moPotentially people could have the cost function of an AI's model have include its ease of interpretation by humans a factor. Having people manually check every change in a model for its effect on interperability would be too slow, but an AI could still periodically check its current best model with humans and learn a different one if it's too hard to interpret. I've seen a lot of mention of the importance of safe AI being competitive with non-safe AI. And I'm wondering what would happen if the government just illegalized or heavily taxed the use of the unsafe AI techniques. Then even with significant capability increases, it wouldn't be worthwhile to use them. Is there something very doubtful about governments creating such a regulation? I mean, I've already heard some people high in the government concerned about AI safety. And the Future of Life institute got the Californian government to unanimously pass the Asilomar AI Principles. It includes things about AI safety, like rigidly controlling any AI that can recursively self-improve. It sounds extremely dangerous having widespread use of powerful, unaligned AI. So simply to protect their selves and families, they could potentially benefit a lot from implementing such regulations.
-1Zack_M_Davis3moA key psychological advantage of the "modest alignment" agenda is that it's not insanity-inducing. When I seriously contemplate the problem of selecting a utility function to determine the entire universe until the end of time, I want to die (which seems safer and more responsible). But the problem of making language models "be honest" instead of just continuing the prompt? That's more my speed; that, I can think about, and possibly even usefully contribute to, without wanting to die. (And if someone else in the future uses honest language models as one of many tools to help select a utility function to determine the entire universe until the end of time, that's not my problem and not my fault.)
1Pattern3moThat may be 'the best we could hope for', but I'm more worried about 'we can't understand the neural net (with the tools we have)' than "the neural net is doing things that rely on concepts that it’s fundamentally impossible for humans to understand". (Or, solving the task requires concepts that are really complicated to understand (though maybe easy for humans to understand), and so the neural network doesn't get it.) Whether or not "empirical contingencies work out nicely", I think the concern about 'fundamentally impossible to understand concepts" is...something that won't show up in every domain. (I also think that things do exist that people can understand, but it takes a lot of work, so people don't do it. There's an example from math involving some obscure theorems that aren't used a lot for that reason.)
7Steven Byrnes3moI wonder what you mean by "competitive"? Let's talk about the "alignment tax" framing [https://www.effectivealtruism.org/articles/paul-christiano-current-work-in-ai-alignment/] . One extreme is that we can find a way such that there is no tradeoff whatsoever between safety and capabilities—an "alignment tax" of 0%. The other extreme is an alignment tax of 100%—we know how to make unsafe AGIs but we don't know how to make safe AGIs. (Or more specifically, there are plans / ideas that an unsafe AI could come up with and execute, and a safe AI can't, not even with extra time/money/compute/whatever.) I've been resigned to the idea that an alignment tax of 0% is a pipe dream—that's just way too much to hope for, for various seemingly-fundamental reasons like humans-in-the-loop being more slow and expensive than humans-out-of-the-loop (more discussion here [https://www.lesswrong.com/posts/Gfw7JMdKirxeSPiAk/solving-the-whole-agi-control-problem-version-0-0001#2_1_But_aren_t_capability_safety_tradeoffs_a_no_go_] ). But we still want to minimize the alignment tax, and we definitely want to avoid the alignment tax being 100%. (And meanwhile, independently, we try to tackle the non-technical problem of ensuring that all the relevant players are always paying the alignment tax.) I feel like your post makes more sense to me when I replace the word "competitive" with something like "arbitrarily capable" everywhere (or "sufficiently capable" in the bootstrapping approach where we hand off AI alignment research to the early AGIs). I think that's what you have in mind?—that you're worried these techniques will just hit a capabilities wall, and beyond that the alignment tax shoots all the way to 100%. Is that fair? Or do you see an alignment tax of even 1% as an "insufficient strategy"?
Taboo "Outside View"

I really liked this post, thanks so much for writing it. I have been very frustrated by people conflating these different meanings of "outside view" in the past.

Is MIRI actually hiring and does Buck Shlegeris still work for you?

I think Anna and Rob answered the main questions here, but for the record I am still in the business of talking to people who want to work on alignment stuff. (And as Anna speculated, I am indeed still the person who processes MIRI job applications.)

5Viliam9moJust curious: would completing this game [https://wwwf.imperial.ac.uk/~buzzard/xena/natural_number_game/] qualify as being able to get a position at MIRI? I am not actually trying to get a job at MIRI, I just played that game recently, so I am curious if that implies anything.
Buck's Shortform

I know a lot of people through a shared interest in truth-seeking and epistemics. I also know a lot of people through a shared interest in trying to do good in the world.

I think I would have naively expected that the people who care less about the world would be better at having good epistemics. For example, people who care a lot about particular causes might end up getting really mindkilled by politics, or might end up strongly affiliated with groups that have false beliefs as part of their tribal identity.

But I don’t think that this prediction is true: I... (read more)

2Richard_Ngo2moThese both seem pretty common, so I'm curious about the correlation that you've observed. Is it mainly based on people you know personally? In that case I expect the correlation not to hold amongst the wider population. Also, a big effect which probably doesn't show up much amongst the people you know: younger people seem more altruistic (or at least signal more altruism) and also seem to have worse epistemics than older people.
4Viliam10moCaring about things seems to make you interact with the world in more diverse ways (because you do this in addition to things other people do, not instead of); some of that translates into more experience and better models. But also tribal identity, mindkilling, often refusing to see the reasons why your straightforward solution would not work, and uncritical contrarianism. Now I think about a group of people I know, who care strongly about improving the world, in the one or two aspects they focus on. They did a few amazing things and gained lots of skills; they publish books, organize big conferences, created a network of like-minded people in other countries; some of their activities are profitable, for others they apply for various grants and often get them, so some of them improve the world as a full-time job. They also believe that covid is a hoax, plus have lots of less fringe but still quite irrational beliefs. However... this depends on how you calculate the "total rationality", but seems to me that their gains in near mode outweigh the losses in far mode, and in some sense I would call them more rational than average population. Of course I dream about a group that would have all the advantages and none of the disadvantages.
Buck's Shortform
Buck1y17Ω8

I used to think that slower takeoff implied shorter timelines, because slow takeoff means that pre-AGI AI is more economically valuable, which means that economy advances faster, which means that we get AGI sooner. But there's a countervailing consideration, which is that in slow takeoff worlds, you can make arguments like ‘it’s unlikely that we’re close to AGI, because AI can’t do X yet’, where X might be ‘make a trillion dollars a year’ or ‘be as competent as a bee’. I now overall think ... (read more)

4Sammy Martin1yI wrote a whole post on modelling specific continuous or discontinuous scenarios [https://www.lesswrong.com/posts/66FKFkWAugS8diydF/modelling-continuous-progress] - in the course of trying to make a very simple differential equation model of continuous takeoff, by modifying the models given by Bostrom/Yudkowsky for fast takeoff, the result that fast takeoff means later timelines naturally jumps out. But that model relies on pre-setting a fixed 'threshold for AGI, given by the parameter AGI, in advance. This, along with the starting intelligence of the system, fixes how far away AGI is. You could (I might get round to doing this), model the effect you're talking about by allowing IAGI to vary with the level of discontinuity. So every model would start with the same initial intelligence I0, but the IAGI would be correlated with the level of discontinuity, with larger discontinuity implying IAGI is smaller. That way, you would reproduce the epistemic difference of expecting a stronger discontinuity - that the current intelligence of AI systems is implied to be closer to what we'd expect to need for explosive growth on discontinuous takeoff scenarios than on continuous scenarios. We know the current level of capability and the current rate of progress, but we don't know I_AGI, and holding all else constant slow takeoff implies I_AGI is a significantly higher number (again, I_AGI is relative to the starting intelligence of the system) This is because my model was trying to model different physical situations, different ways AGI could be, not different epistemic situations, so I was thinking in terms of I_AGI being some fixed, objective value that we just don't happen to know. I'm uncertain if there's a rigorous way of quantifying how much this epistemic update does against the physical fact that continuous takeoff implies an earlier acceleration above exponential. If you're right, it overall completely cancels this effect out and makes timelines on discontinuous tak
How good is humanity at coordination?

But I think that it's pretty likely that nuclear war could have not killed everyone. So I still lose Bayes points compared to the world where nukes were fired but not everyone died.

Nuclear war doesn't have to kill everyone to make our world non-viable for anthropic reasons. It just has to render our world unlikely to be simulated.

6Rafael Harth1yYeah, the "we didn't observe nukes going off" observation is definitely still some evidence for the "humans are competent at handling dangerous technology" hypothesis, but (if one buys into the argument I'm making) it's much weaker evidence than one would naively think.
$1000 bounty for OpenAI to show whether GPT3 was "deliberately" pretending to be stupider than it is Buck1y18Ω6 It's tempting to anthropomorphize GPT-3 as trying its hardest to make John smart. That's what we want GPT-3 to do, right? I don't feel at all tempted to do that anthropomorphization, and I think it's weird that EY is acting as if this is a reasonable thing to do. Like, obviously GPT-3 is doing sequence prediction--that's what it was trained to do. Even if it turns out that GPT-3 correctly answers questions about balanced parens in some contexts, I feel pretty weird about calling that "deliberately pretending to be stupider than it is". I don't feel at all tempted to do that anthropomorphization, and I think it's weird that EY is acting as if this is a reasonable thing to do. "It's tempting to anthropomorphize GPT-3 as trying its hardest to make John smart" seems obviously incorrect if it's explicitly phrased that way, but e.g. the "Giving GPT-3 a Turing Test" post seems to implicitly assume something like it: This gives us a hint for how to stump the AI more consistently. We need to ask questions that no normal human would ever talk about. Q: How m ... (read more) 4ESRogs1yYeah, it seems like deliberately pretending to be stupid here would be predicting a less likely sequence, in service of some other goal. Possible takeaways from the coronavirus pandemic for slow AI takeoff Buck1y1Ω1 If the linked SSC article is about the aestivation hypothesis, see the rebuttal here. 2Alexei1yNo the SSC article is about how you should pay attention to the distribution of aliens in different universes, and that in most of them you won’t find any, while the mean can still be pretty high. Six economics misconceptions of mine which I've resolved over the last few years Remember that I’m not interested in evidence here, this post is just about what the theoretical analysis says :) In an economy where the relative wealth of rich and poor people is constant, poor people and rich people both have consumption equal to their income. 1Yosarian T1yDon't rich people tend to die with a significant portion of their lifetime income unspent, while poor people don't? 4Anon User1yFirst, poor have lower savings rate, and consume faster, so money velocity is higher. Second, minimal wages are local, and I would imagine that poor people on average spend a bigger fraction of their consumption locally (but I am not as certain about this one). Six economics misconceptions of mine which I've resolved over the last few years I agree that there's some subtlety here, but I don't think that all that happened here is that my model got more complex. I think I'm trying to say something more like "I thought that I understood the first-order considerations, but actually I didn't." Or "I thought that I understood the solution to this particular problem, but actually that problem had a different solution than I thought it did". Eg in the situations of 1, 2, and 3, I had a picture in my head of some idealized market, and I had false beliefs about wh... (read more) Six economics misconceptions of mine which I've resolved over the last few years I agree that the case where there are several equilibrium points that are almost as good for the employer is the case where the minimum wage looks best. Re point 1, note that the minimum wage decreases total consumption, because it reduces efficiency. 4gbear6051yA minimum wage decreases total consumption in some situations but not in all situations. In a world consisting of ten poor people and a single rich person, where buying the bare minimum food costs$1/day and buying comfort costs $10/day, the only way for the poor people to get money is to work for the rich person, and he is willing to hire them for any wage up to$100/day, the equilibrium wage would be $1/day. The result is that the rich person would only be spending$20/day (his own food, the wages of the nine poor people, and his own comfort) and each poor person would be spending $1/day, their entire wage. If a minimum wage of$11/day were instituted, all the poor people would be hired for \$11/day, with all ten of the people having food to survive and having comfort. Consumption would go up significantly and everyone would be better off.
8Lucas20001yIs there actual evidence that a minimum wage decreases total consumption? I've never heard that, or seen any study on it, and I'd like to learn more. (Intuitively, it doesn't seem highly plausible to me, since my assumption would be that it transfers wealth from rich people to poor people, which should increase total consumption, because there's more room for consumption growth for poorer people, but I'm also not sure if that is true.) (Edit: after a cursory search of current research on the topic, it seems that the consensus is rather that a minimum wage has a small positive effect on consumption, which is what I would have naively expected.)
What will be the big-picture implications of the coronavirus, assuming it eventually infects >10% of the world?

I've now made a Guesstimate here. I suspect that it is very bad and dumb; please make your own that is better than mine. I'm probably not going to fix problems with mine. Some people like Daniel Filan are confused by what my model means; I am like 50-50 on whether my model is really dumb or just confusing to read.

Also don't understand this part. "4x as many mild cases as severe cases" is compatible with what I assumed (10%-20% of all cases end up severe or critical) but where does 3% come from?

Yeah my text was wrong here; I meant that I think you get 4

7DanielFilan2yFor what it's worth I don't see why the guesstimate makes sense - it assumes that the only people who die are those who get the disease during oxygen shortages, which seems wrong to me. [EDIT: it's possible that I'm confused about what the model means, the way to check this would be to see if I believe something false about it and then correct my belief]
1Lanrian2yMy impression is that the WHO has been dividing up confirmed cases into mild/moderate (≈80%) and severe/critical (20%). The guesstimate model assumes that there are 80% "mild" cases, and 20% "confirmed" cases, which is inconsistent with WHO's terminology. If you got the 80%-number from WHO or some other source using similar terminology, I'd recommend changing it. If you got it from a source explicitly talking about asymptomatic cases or so-mild-that-you-don't-go-to-the-doctor, then it seems fine to keep it (but maybe change the name). Edit: Wikipedia [https://en.wikipedia.org/wiki/2020_coronavirus_outbreak_on_cruise_ships#Diamond_Princess] says that Diamond Princess had 392/705 asymptomatic cases by 26th February. Given that some of the patients might go on to develop symptoms later on, ≈55% might be an upper bound of asymptomatic cases? Some relevant quotes from WHO-report [https://www.who.int/docs/default-source/coronaviruse/who-china-joint-mission-on-covid-19-final-report.pdf] (mostly to back up my claims about terminology; Howie questions the validity of the last sentences [https://www.lesswrong.com/posts/RukXjEvMfqDKRJaup/what-will-be-the-big-picture-implications-of-the-coronavirus#Z8tEro5xHdrMvjEnH] further down in this thread):
What will be the big-picture implications of the coronavirus, assuming it eventually infects >10% of the world?

Oh yeah I'm totally wrong there. I don't have time to correct this now. Some helpful onlooker should make a Guesstimate for all this.

What will be the big-picture implications of the coronavirus, assuming it eventually infects >10% of the world?

Epistemic status: I don't really know what I'm talking about. I am not at all an expert here (though I have been talking to some of my more expert friends about this).

EDIT: I now have a Guesstimate model here, but its results don't really make sense. I encourage others to make their own.

Here's my model: To get such a large death toll, there would need to be lots of people who need oxygen all at once and who can't get it. So we need to multiply the proportion of people who might have be infected all at once by the fatality rate for such people. I'm going to

4Elizabeth2yAm I correct that you're assuming a percentage chance of access to oxygen or a ventilator, rather than a cut off after which we run out of ventilators?

In places with aggressive testing, like Diamond Princess and South Korea, you see much lower fatality rates, which suggests that lots of cases are mild.

With South Korea, I think most cases have not had enough time to progress to fatality yet. With Diamond Princess, there are 7 deaths out of 707 detected cases so far, with more than half of the cases still active. I'm not sure how you concluded from this "that lots of cases are mild". Please explain more? That page does say only 35 serious or critical cases, but I suspect this is probably because the pas

5Daniel Kokotajlo2yHow much oxygen is there to go round? Why think that everyone getting sick in one month will exhaust supplies but not if everyone gets sick in six months? I'd guess that there is very little oxygen to go round.
3Lanrian2yI don't understand how you get those kinds of numbers from the fb-comment, they're way too high. Maybe you mean fatality of severe or critical cases, or survival rates rather than fatality rates. Do you mind clarifying? Are you saying that the flu is more transmissible than corona? I think I've read that corona is spreading faster, but I don't have a good source, so I'd be curious if you do.
What will be the big-picture implications of the coronavirus, assuming it eventually infects >10% of the world?

Just for the record, I think that this estimate is pretty high and I'd be pretty surprised if it were true; I've talked to a few biosecurity friends about this and they thought it was too high. I'm worried that this answer has been highly upvoted but there are lots of people who think it's wrong. I'd be excited for more commenters giving their bottom line predictions about this, so that it's easier to see the spread.

Yeah, I kind of wrote that in a hurry to highlight the implications of one particular update that I made (namely that if hospitals are overwhelmed the CFR will become much higher), and didn't mean to sound very confident or have it be taken as the LW consensus. (Maybe some people also upvoted it for the update rather than for the bottom line prediction?)

I do still stand by it in the sense that I think there's >50% chance that global death rate will be >2.5%. Instead of betting about it though, maybe you could try to convince me otherwise? E.g., what's the weakest part of my argument/model, or what's your prediction and how did you arrive at it?

AIRCS Workshop: How I failed to be recruited at MIRI.

(I'm unsure whether I should write this comment referring to the author of this post in second or third person; I think I'm going to go with third person, though it feels a bit awkward. Arthur reviewed this comment before I posted it.)

Here are a couple of clarifications about things in this post, which might be relevant for people who are using it to learn about the MIRI recruiting process. Note that I'm the MIRI recruiter Arthur describes working with.

I think Arthur is a really smart, good programmer. Arthur doesn't have as much backgroun

Hi,

Thank you for your long and detailed answer. I'm amazed that you were able to do it so quickly after the post's publication. Especially since you sent me your answer by email while I just published my post on LW without showing it to anyone first.

Arthur reports a variety of people in this post as saying things that I think are somewhat misinterpreted, and I disagree with several of the things he describes them as saying.

I added a link to this comment in the top of the post. I am not surprised to learn that I misunderstood some things which were said

We run the Center for Applied Rationality, AMA

For the record, parts of that ratanon post seem extremely inaccurate to me; for example, the claim that MIRI people are deferring to Dario Amodei on timelines is not even remotely reasonable. So I wouldn't take it that seriously.

7Ben Pace2yHuh, thanks for the info, I'm surprised to hear that. I myself had heard that rumour, saying that at the second FLI conference Dario had spoken a lot about short timelines and now everyone including MIRI was scared. IIRC I heard it from some people involved in ML who were in attendance of that conference, but I didn't hear it from anyone at MIRI. I never heard much disconfirmatory evidence, and it's certainly been a sort-of-belief that's bounced around my head for the past two or so years.

Agreed I wouldn’t take the ratanon post too seriously. For another example, I know from living with Dario that his motives do not resemble those ascribed to him in that post.

Buck2y11Ω6

This policy itself is still a multilayer perceptron, which has no internal state, so we believe that in some cases the agent uses its arms to store information.

Buck's Shortform

formatting problem, now fixed

Aligning a toy model of optimization
Buck2y3Ω2

Given a policy π we can directly search for an input on which it behaves a certain way.

(I'm sure this point is obvious to Paul, but it wasn't to me)

We can search for inputs on which a policy behaves badly, which is really helpful for verifying the worst case of a certain policy. But we can't search for a policy which has a good worst case, because that would require using the black box inside the function passed to the black box, which we can't do. I think you can also say this as "the black box is an NP oracle, not a oracle".

This still means that w

Robustness to Scale
Buck2y5Ω3

I think that the terms introduced by this post are great and I use them all the time

Six AI Risk/Strategy Ideas
Buck2y4Ω2

Ah yes this seems totally correct

Buck's Shortform

[I'm not sure how good this is, it was interesting to me to think about, idk if it's useful, I wrote it quickly.]

Over the last year, I internalized Bayes' Theorem much more than I previously had; this led me to noticing that when I applied it in my life it tended to have counterintuitive results; after thinking about it for a while, I concluded that my intuitions were right and I was using Bayes wrong. (I'm going to call Bayes' Theorem "Bayes" from now on.)

Before I can tell you about that, I need to make sure you're thinking about Bayes in terms of ratios

1Liam Donovan2yWhat does "120:991" mean here?
7Ben Pace2yTime to record my thoughts! I won't try to solve it fully, just note my reactions. Well, firstly, I'm not sure that the likelihood ratio is 12x in favor of the former hypothesis. Perhaps likelihood of things clusters - like people either do things a lot, or they never do things. It's not clear to me that I have an even distribution of things I do twice a month, three times a month, four times a month, and so on. I'd need to think about this more. Also, while I agree it's a significant update toward your friend being a regular there given that you saw them the one time you went, you know a lot of people, and if it's a popular place then the chances of you seeing any given friend is kinda high, even if they're all irregular visitors. Like, if each time you go you see a different friend, I think it's more likely that it's popular and lots of people go from time to time, rather than they're all going loads of times each. I don't quite get what's going on here. As someone from Britain, I regularly walk through more than 6 cars of a train. The anthropics just checks out. (Note added 5 months later: I was making a british joke here.)
Open & Welcome Thread - November 2019

Email me at buck@intelligence.org with some more info about you and I might be able to give you some ideas (and we can maybe talk about things you could do for ai alignment more generally)

Six AI Risk/Strategy Ideas
Buck2y5Ω3

Minor point: I think asteroid strikes are probably very highly correlated between Everett branches (though maybe the timing of spotting an asteroid on a collision course is variable).

9Wei_Dai2yI think if we could look at all the Everett branches that contain some version of you, we'd see "bundles" where the asteroid locations are the same within each bundle but different between bundles, because different bundles evolved from different starting conditions (and then converged in terms of having produced someone who is subjectively indistinguishable from you). So a big asteroid strike would wipe out humanity in an entire bundle but that would only constitute a small fraction of all the Everett branches that contain a version of you. Hopefully that makes sense?
Buck's Shortform

A couple weeks ago I spent an hour talking over video chat with Daniel Cantu, a UCLA neuroscience postdoc who I hired on Wyzant.com to spend an hour answering a variety of questions about neuroscience I had. (Thanks Daniel for reviewing this blog post for me!)

The most interesting thing I learned is that I had quite substantially misunderstood the connection between convolutional neural nets and the human visual system. People claim that these are somewhat bio-inspired, and that if you look at early layers of the visual cortex you'll find that it operates k

Buck's Shortform

I recommend looking on Wyzant.

Buck's Shortform

I think that an extremely effective way to get a better feel for a new subject is to pay an online tutor to answer your questions about it for an hour.

It turns that there are a bunch of grad students on Wyzant who mostly work tutoring high school math or whatever but who are very happy to spend an hour answering your weird questions.

For example, a few weeks ago I had a session with a first-year Harvard synthetic biology PhD. Before the session, I spent a ten-minute timer writing down things that I currently didn't get about biology. (This is an exercise wo

Hired an econ tutor based on this.

4magfrump2yHow do you connect with tutors to do this? I feel like I would enjoy this experience a lot and potentially learn a lot from it, but thinking about figuring out who to reach out to and how to reach out to them quickly becomes intimidating for me.
2Ben Pace2yThis sounds like a really fun thing I can do at weekends / in the mornings [https://www.lesswrong.com/posts/3hedZ2TbP44z4DvXN/benito-s-shortform-feed#SzGBdP7ye7zwiDS9Y] . I’ll try it out and report back sometime.
2Chris_Leong2yThanks for posting this. After looking, I'm definitely tempted.

I've hired tutors around 10 times while I was studying at UC-Berkeley for various classes I was taking. My usual experience was that I was easily 5-10 times faster in learning things with them than I was either via lectures or via self-study, and often 3-4 one-hour meetings were enough to convey the whole content of an undergraduate class (combined with another 10-15 hours of exercises).

"Other people are wrong" vs "I am right"

I'm confused about what point you're making with the bike thief example. I'm reading through that post and its comments to see if I can understand your post better with that as background context, but you might want to clarify that part of the post (with a reader who doesn't have that context in mind).

Can you clarify what is unclear about it?

Current AI Safety Roles for Software Engineers
I believe they would like to hire several engineers in the next few years.

We would like to hire many more than several engineers--we want to hire as many people as engineers as possible; this would be dozens if we could, but it's hard to hire, so we'll more likely end up hiring more like ten over the next year.

I think that MIRI engineering is a really high impact opportunity, and I think it's definitely worth the time for EA computer science people to apply or email me (buck@intelligence.org).

Weird question: could we see distant aliens?

My main concern with this is the same as the problem listed on Wei Dai's answer: whether a star near us is likely to block out this light. The sun is about 10^9m across. A star that's 10 thousand light years away (this is 10% of the diameter of the Milky Way) occupies about (1e9m / (10000 lightyears * 2 * pi))**2 = 10^-24 of the night sky. A galaxy that's 20 billion light years away occupies something like (100000 lightyears / 20 billion lightyears) ** 2 ~= 2.5e-11. So galaxies occupy more space than stars. So it would be weird if individual stars blocked out a whole galaxy.

Weird question: could we see distant aliens?

Another piece of idea: If you're extremely techno-optimistic, then I think it would be better to emit light at weird wavelengths than to just emit a lot of light. Eg emitting light at two wavelengths with ratio pi or something. This seems much more unmistakably intelligence-caused than an extremely bright light.

2paulfchristiano4ySame question as Michael: if there were a point source with weird spectrum outside of any galaxy, about as bright as the average galaxy, would we reliably notice it?
Weird question: could we see distant aliens?

My first idea is to make two really big black holes and then make them merge. We observed gravitational waves from two black holes with solar masses of around 25 solar masses each located 1.8 billion light years away. Presumably this force decreases as an inverse square times exponential decay; ignoring the exponential decay this suggests to me that we need 100 times as much mass to be as prominent from 18 billion light years. A galaxy mass is around 10^12 solar masses. So if we spent 2500 solar masses on this each year, it would be at least as prominent a... (read more)

2Donald Hobson4yThe first merger event that Ligo detected was 1 billion ly away and turned 1 solar mass into gravitational waves. 1030kg=1047J at a distance of 109×1016=1025 m so energy flux received is approx 1047×(1025)−2=10−3J/m2 The main peak power output from the merging black holes lasted around one second. A full moon illuminates earth with around 10−3W. So even if the aliens are great at making gravitational waves, they aren't a good way to communicate. If they send a gravitational wave signal just powerful enough for us to detect with our most sensitive instruments, with the same power as light they could outshine the moon. Light is just more easily detected.
1Buck4yMy main concern with this is the same as the problem listed on Wei Dai's answer: whether a star near us is likely to block out this light. The sun is about 10^9m across. A star that's 10 thousand light years away (this is 10% of the diameter of the Milky Way) occupies about (1e9m / (10000 lightyears * 2 * pi))**2 = 10^-24 of the night sky. A galaxy that's 20 billion light years away occupies something like (100000 lightyears / 20 billion lightyears) ** 2 ~= 2.5e-11. So galaxies occupy more space than stars. So it would be weird if individual stars blocked out a whole galaxy.
1Buck4yAnother piece of idea: If you're extremely techno-optimistic, then I think it would be better to emit light at weird wavelengths than to just emit a lot of light. Eg emitting light at two wavelengths with ratio pi or something. This seems much more unmistakably intelligence-caused than an extremely bright light.


text:
# Find the Values Of K For Which the Roots Are Real and Equal in Each of the Following Equation: 2x2 + Kx + 3 = 0 - Mathematics

Find the values of k for which the roots are real and equal in each of the following equation:

2x2 + kx + 3 = 0

#### Solution

The given equation is 2x2 + kx + 3 = 0

The given equation is in the form of

ax2 + bx + c = 0

where a = 2, b = k and c = 3

Therefore, the discriminant

D = b2 - 4ac

= k2 - 4 x (2) x (3)

= k2 - 24

∵ Roots of the given equation are real and equal

∴ D = 0

⇒ k2 - 24 = 0

⇒ k2 = 24

rArrk=sqrt24

rArrk=+-sqrt(4xx6)

rArrk=+-2sqrt6

Hence, the value of k=+-2sqrt6

Is there an error in this question or solution?

#### APPEARS IN

RD Sharma Class 10 Maths
Exercise 4.6 | Q 5.1 | Page 42


text:
Elementary and Intermediate Algebra: Concepts & Applications (6th Edition)

$x=-125$
Raising both sides to the $\text{ 3rd }$ power, the solution to the given equation, $\sqrt[3]{x}=-5$, is \begin{array}{l} x=(-5)^3 \\\\ x=-125 .\end{array}